package com.chenhs.oop.study.自定义注解;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * <ul>peanut 自定义注解
 * <li> Author:      chenhs</li>
 * <li>E-Mail:    </li>
 * <li> Date:     2021/6/5 - 15:53</li>
 * <li>Description:        注释  </li>
 * <li>+-History-------------------------------------+</li>
 * <li>| Date          Author       Description    </li>
 * <li>|2021/6/5 - 15:53         chenhs       Created   </li>
 * <li>+------------------------------------------------</li>
 * </ul>
 */
//注解使用范围
//	@Target(ElementType.TYPE)——接口、类、枚举、注解
//@Target(ElementType.FIELD)——字段、枚举的常量
//@Target(ElementType.METHOD)——方法
//@Target(ElementType.PARAMETER)——方法参数
//@Target(ElementType.CONSTRUCTOR) ——构造函数
//@Target(ElementType.LOCAL_VARIABLE)——局部变量
//@Target(ElementType.ANNOTATION_TYPE)——注解
//@Target(ElementType.PACKAGE)——包

@Target({ElementType.FIELD,ElementType.METHOD,ElementType.TYPE})
//1、RetentionPolicy.SOURCE：注解只保留在源文件，当Java文件编译成class文件的时候，注解被遗弃；
//2、RetentionPolicy.CLASS：注解被保留到class文件，但jvm加载class文件时候被遗弃，这是默认的生命周期；
//3、RetentionPolicy.RUNTIME：注解不仅被保存到class文件中，jvm加载class文件之后，仍然存在；
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
}
